﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using NHibernate;
using NHibernate.Cfg;

    /// <summary>
    /// Code-Behind de la pagina ReporteTotFacEmit.aspx donde
    /// se implementa todas las funciones y procedimientos.
    /// </summary>
    public partial class MasterPage2 : System.Web.UI.Page
    {
        FacturaControl control = new FacturaControl();
        ExportarReporte exporto = new ExportarReporte();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
        private string m_Titulo;
        public string Titulo
        {
            get
            {
                return m_Titulo;
            }
            set
            {
                m_Titulo = value;
                //this.H1Titulo.InnerText = value;
            }
        }

        /// <summary>
        /// Procedimiento encargado de verificar que la pagina a
        /// pasado los procesos de validacion de las herramientas
        /// RequiredValidator y RangeValidator en la pagina, y 
        /// luego procede a llamar a el procedimiento consultar()
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void validar(object sender, EventArgs e)
        {
           if (this.Page.IsValid)
             consultar();         
        }

        /// <summary>
        /// Procedimiento encargado de obtener el año introducido a consultar
        /// para luego proceder a llamar a la funcion FacturasFecha, pasandole
        /// dicho año de consulta. El resultado es la devolucion de una lista
        /// con la informacion de la solicitud.
        /// 
        /// Verifica si existen datos en la lista, de no ser asi procede a 
        /// limpiar el gridview y le asigna el mensaje No existen facuras 
        /// emitidas para este año, sino, procede a crear las columnas del 
        /// gridview y s ele pasa el flujo de datos (lista) paramostrar en 
        /// pantalla y se habilita y da la visibilidad al boton de exportar el
        /// reporte.
        /// </summary>
        protected void consultar()
        {
           string año = this.Date3.Text;
           IList fac = control.FacturasFecha(año);
           int totalrow = fac.Count;
           if (totalrow == 0)
           {
              this.GridView1.Columns.Clear();
              this.GridView1.EmptyDataText = "No existen Facturas Emitidas para este Año";
              this.GridView1.Caption = "Reporte de Facturas Emitidas en el " + año;
              this.GridView1.DataSource = fac;
              this.GridView1.DataBind();
              this.Button1.Enabled = true;
              this.Button1.Visible = true;
           }
           else
           {
              this.GridView1.Columns.Clear();
              BoundField numero = new BoundField();
              BoundField fecha = new BoundField();
              BoundField titulo = new BoundField();
              BoundField monto = new BoundField();
              BoundField estado = new BoundField();
              numero.DataField = "Numero";  // del Origen de datos
              numero.HeaderText = "NUMERO"; // Nombre de la Columna
              fecha.DataField = "Fecha";  
              fecha.HeaderText = "FECHA";
              titulo.DataField = "Titulo"; 
              titulo.HeaderText = "TITULO";
              titulo.FooterText = "TOTAL DE FACTURAS: ";
              titulo.FooterStyle.HorizontalAlign = HorizontalAlign.Right;
              monto.DataField = "Monto";  
              monto.HeaderText = "MONTO";
              monto.FooterText = Convert.ToString(totalrow);
              monto.FooterStyle.HorizontalAlign = HorizontalAlign.Left;
              estado.DataField = "Estado";
              estado.HeaderText = "ESTADO";
              this.GridView1.Columns.Add(numero);
              this.GridView1.Columns.Add(fecha);
              this.GridView1.Columns.Add(titulo);
              this.GridView1.Columns.Add(monto);
              this.GridView1.Columns.Add(estado);
              this.GridView1.Caption = "Reporte de Facturas Emitidas en el " + año;
              this.GridView1.DataSource = fac;
              this.GridView1.DataBind();
              this.Button1.Enabled = true;
              this.Button1.Visible = true;
           }
        }
        
        /// <summary>
        /// Procedimiento encargado de llamar al metodo para exportar el reporte
        /// del gridview a un archivo csv al presionar el boton Exportar CSV
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void  exportar(object sender, EventArgs e)
        {
            try 
            {
                exporto.ExportarCsv(GridView1, "TotalFactEmitidas", this.Page);
            }
            catch (SystemException error)
            {
                Response.Write("<scrip lenguage='javascript'> alert('Error "+error+" al tratar de Exportar el Reporte');</script>");
            }
        }
}


